package nccloud.utils.mobile_riart;
import nc.bs.logging.Log;
import nc.vo.pub.CircularlyAccessibleValueObject;
/**
 * 记录发送第三方代办消息的日志
 * @author wanggp
 * @date 2022年4月25日
 */
public final class MessageLogger {
	public static String MessageLog = "msglog";//标记

	/**
	 * ObmLog的构造方法
	 */
	private MessageLogger() {
		super();
	}

	/**
	 * 打印调试日志
	 * 
	 * @param msg
	 *            日志信息
	 * @param caller
	 *            调用类
	 * @param methodName
	 *            调用方法名
	 * @author wangxy
	 * @since NC5.0
	 */
	public static void debug(Object msg, Class caller, String methodName) {
		Log obmLog = Log.getInstance(MessageLog);
		obmLog.debug(msg, caller, methodName);
	}

	/**
	 * 打印调试日志
	 * 
	 * @param msg
	 *            错误信息
	 * @param cvos
	 *            数据对象
	 * @param caller
	 *            调用类
	 * @param methodName
	 *            调用方法
	 * @author wangxy
	 * @since NC5.0
	 */
	public static void debug(String msg, CircularlyAccessibleValueObject cvos, Class caller,
			String methodName) {
		debug(msg, new CircularlyAccessibleValueObject[] { cvos }, caller, methodName);
	}

	/**
	 * 打印调试日志
	 * 
	 * @param msg
	 *            错误信息
	 * @param cvos
	 *            数据对象
	 * @param caller
	 *            调用类
	 * @param methodName
	 *            调用方法
	 * @author wangxy
	 * @since NC5.0
	 */
	public static void debug(String msg, CircularlyAccessibleValueObject[] cvos, Class caller,String methodName) {
		StringBuilder strbuf = new StringBuilder();
		strbuf.append(msg);
		strbuf.append("\n");
		if (cvos == null) {
			strbuf.append("数据为空！");/*-=notranslate=-*/
		} else {
			if (cvos.length == 0) {
				strbuf.append("数据为0长度数组,数据类型为:");/*-=notranslate=-*/
				strbuf.append(cvos.getClass());
			} else {
				if (cvos.length > 1) {
					strbuf.append("数组长度为[");/*-=notranslate=-*/
					strbuf.append(cvos.length);
					strbuf.append("]\n");
				}
				for (int i = 0; i < cvos.length; i++) {
					if (cvos[i] == null) {
						strbuf.append("第[");/*-=notranslate=-*/
						strbuf.append(i);
						strbuf.append("]个数据为空！");/*-=notranslate=-*/
					} else {
						strbuf.append("第[");/*-=notranslate=-*/
						strbuf.append(i);
						strbuf.append("]个数据,类型:[");/*-=notranslate=-*/
						strbuf.append("]\n");
						String[] keys = cvos[i].getAttributeNames();
						if (keys == null || keys.length == 0) {
							strbuf.append("无数据!\n");/*-=notranslate=-*/
						}
						for (int n = 0; n < keys.length; n++) {
							strbuf.append("{");
							strbuf.append(keys[n]);
							strbuf.append("} = {");
							strbuf.append(cvos[i].getAttributeValue(keys[n]));
							strbuf.append("}\n");
						}
					}
				}
			}
		}
		debug(strbuf.toString(), caller, methodName);
	}

	/**
	 * 打印信息日志
	 * 
	 * @param msg
	 *            日志信息
	 * @param caller
	 *            调用类
	 * @param methodName
	 *            调用方法名
	 * @author wangxy
	 * @since NC5.0
	 */
	public static void info(Object msg, Class caller, String methodName) {
		Log obmLog = Log.getInstance(MessageLog);
		obmLog.info(msg, caller, methodName);
	}

	/**
	 *
	 * @param msg
	 */
	public static void info(Object msg) {
		Log obmLog = Log.getInstance(MessageLog);
		obmLog.info(msg);
	}
	/**
	 * 打印错误日志
	 * 
	 * @param msg
	 *            日志信息
	 * @param exception
	 *            异常类
	 * @param caller
	 *            调用类
	 * @param methodName
	 *            调用方法名
	 * @author wangxy
	 * @since NC5.0
	 */
	public static void error(Object msg, Throwable exception, Class caller, String methodName) { 
		Log obmLog = Log.getInstance(MessageLog);
		obmLog.error(msg, exception, caller, methodName);
	}

	/**
	 * 打印错误日志
 	 * @param msg
	 */
	public static void error(Object msg) {
		Log obmLog = Log.getInstance(MessageLog);
		obmLog.error(msg);
	}

	/**
	 * 打印警告日志
	 * 
	 * @param msg
	 *            日志信息
	 * @param exception
	 *            异常类
	 * @param caller
	 *            调用类
	 * @param methodName
	 *            调用方法名
	 * @author wangxy
	 * @since NC5.0
	 */
	public static void warn(Object msg, Throwable exception, Class caller, String methodName) {
		Log obmLog = Log.getInstance(MessageLog);
		obmLog.warn(msg, exception, caller, methodName);
	}

	/**
	 * 打印警告日志
	 * 
	 * @param msg
	 *            日志信息
	 * @param caller
	 *            调用类
	 * @param methodName
	 *            调用方法名
	 * @author wangxy
	 * @since NC5.0
	 */
	public static void warn(Object msg, Class caller, String methodName) {
		Log obmLog = Log.getInstance(MessageLog);
		obmLog.warn(msg, caller, methodName);
	}
}
